7 sys.path.append(os.getenv(
'MVCAM_COMMON_RUNENV') +
"/Samples/Python/MvImport")
8 from MvCameraControl_class
import *
15 out_frame_info = MV_FRAME_OUT()
16 memset(byref(out_frame_info), 0, sizeof(out_frame_info))
18 ret = cam.MV_CC_GetImageBuffer(out_frame_info, 1000)
19 if out_frame_info.pBufAddr
is not None and 0 == ret:
20 print(
"get one frame: Width[%d], Height[%d], nFrameNum[%d]" % (
21 out_frame_info.stFrameInfo.nWidth, out_frame_info.stFrameInfo.nHeight,
22 out_frame_info.stFrameInfo.nFrameNum))
23 ret = cam.MV_CC_FreeImageBuffer(out_frame_info)
25 print(
"error: no data[0x%x]" % ret)
30 if __name__ ==
"__main__":
33 MvCamera.MV_CC_Initialize()
35 device_list = MV_CC_DEVICE_INFO_LIST()
36 t_layer_type = (MV_GIGE_DEVICE | MV_USB_DEVICE | MV_GENTL_CAMERALINK_DEVICE
37 | MV_GENTL_CXP_DEVICE | MV_GENTL_XOF_DEVICE)
40 ret = MvCamera.MV_CC_EnumDevices(t_layer_type, device_list)
42 print(
"error: enum devices fail! ret[0x%x]" % ret)
45 if device_list.nDeviceNum == 0:
46 print(
"find no device!")
49 print(
"Find %d devices!" % device_list.nDeviceNum)
51 for i
in range(0, device_list.nDeviceNum):
52 mvcc_dev_info = cast(device_list.pDeviceInfo[i], POINTER(MV_CC_DEVICE_INFO)).contents
53 if mvcc_dev_info.nTLayerType == MV_GIGE_DEVICE
or mvcc_dev_info.nTLayerType == MV_GENTL_GIGE_DEVICE:
54 print(
"gige device: [%d]" % i)
55 device_model_name =
"" 56 for per
in mvcc_dev_info.SpecialInfo.stGigEInfo.chModelName:
59 device_model_name = device_model_name + chr(per)
60 print(
"device model name: %s" % device_model_name)
62 nip1 = ((mvcc_dev_info.SpecialInfo.stGigEInfo.nCurrentIp & 0xff000000) >> 24)
63 nip2 = ((mvcc_dev_info.SpecialInfo.stGigEInfo.nCurrentIp & 0x00ff0000) >> 16)
64 nip3 = ((mvcc_dev_info.SpecialInfo.stGigEInfo.nCurrentIp & 0x0000ff00) >> 8)
65 nip4 = (mvcc_dev_info.SpecialInfo.stGigEInfo.nCurrentIp & 0x000000ff)
66 print(
"current ip: %d.%d.%d.%d" % (nip1, nip2, nip3, nip4))
67 elif mvcc_dev_info.nTLayerType == MV_USB_DEVICE:
68 print(
"u3v device: [%d]" % i)
69 device_model_name =
"" 70 for per
in mvcc_dev_info.SpecialInfo.stUsb3VInfo.chModelName:
73 device_model_name = device_model_name + chr(per)
74 print(
"device model name: %s" % device_model_name)
77 for per
in mvcc_dev_info.SpecialInfo.stUsb3VInfo.chSerialNumber:
80 serial_number = serial_number + chr(per)
81 print(
"user serial number: %s" % serial_number)
82 elif mvcc_dev_info.nTLayerType == MV_GENTL_CAMERALINK_DEVICE:
83 print (
"\nCML device: [%d]" % i)
85 for per
in mvcc_dev_info.SpecialInfo.stCMLInfo.chModelName:
88 strModeName = strModeName + chr(per)
89 print (
"device model name: %s" % strModeName)
92 for per
in mvcc_dev_info.SpecialInfo.stCMLInfo.chSerialNumber:
95 strSerialNumber = strSerialNumber + chr(per)
96 print (
"user serial number: %s" % strSerialNumber)
97 elif mvcc_dev_info.nTLayerType == MV_GENTL_CXP_DEVICE:
98 print (
"\nCXP device: [%d]" % i)
100 for per
in mvcc_dev_info.SpecialInfo.stCXPInfo.chModelName:
103 strModeName = strModeName + chr(per)
104 print (
"device model name: %s" % strModeName)
107 for per
in mvcc_dev_info.SpecialInfo.stCXPInfo.chSerialNumber:
110 strSerialNumber = strSerialNumber + chr(per)
111 print (
"user serial number: %s" % strSerialNumber)
112 elif mvcc_dev_info.nTLayerType == MV_GENTL_XOF_DEVICE:
113 print (
"\nXoF device: [%d]" % i)
115 for per
in mvcc_dev_info.SpecialInfo.stXoFInfo.chModelName:
118 strModeName = strModeName + chr(per)
119 print (
"device model name: %s" % strModeName)
122 for per
in mvcc_dev_info.SpecialInfo.stXoFInfo.chSerialNumber:
125 strSerialNumber = strSerialNumber + chr(per)
126 print (
"user serial number: %s" % strSerialNumber)
128 connection_number = input(
"please input the number of the device to connect:")
130 if int(connection_number) >= device_list.nDeviceNum:
131 print(
"error: input error!")
138 current_device_info = cast(device_list.pDeviceInfo[int(connection_number)], POINTER(MV_CC_DEVICE_INFO)).contents
140 ret = cam.MV_CC_CreateHandle(current_device_info)
142 print(
"error: create handle fail! ret[0x%x]" % ret)
146 ret = cam.MV_CC_OpenDevice(MV_ACCESS_Exclusive, 0)
148 print(
"error: open device fail! ret[0x%x]" % ret)
152 if current_device_info.nTLayerType == MV_GIGE_DEVICE
or current_device_info.nTLayerType == MV_GENTL_GIGE_DEVICE:
153 nPacketSize = cam.MV_CC_GetOptimalPacketSize()
154 if int(nPacketSize) > 0:
155 ret = cam.MV_CC_SetIntValue(
"GevSCPSPacketSize", nPacketSize)
157 print(
"Warning: Set Packet Size fail! ret[0x%x]" % ret)
159 print(
"Warning: Get Packet Size fail! ret[0x%x]" % nPacketSize)
161 b_enable = c_bool(
False)
162 ret = cam.MV_CC_GetBoolValue(
"AcquisitionLineRateEnable", b_enable)
164 print(
"error: get AcquisitionLineRateEnable fail! ret[0x%x]" % ret)
167 ret = cam.MV_CC_SetEnumValueByString(
"TriggerSelector",
"LineStart")
169 print(
"error: set trigger selector fail! ret[0x%x]" % ret)
173 ret = cam.MV_CC_SetEnumValue(
"TriggerMode", MV_TRIGGER_MODE_ON)
175 print(
"error: set trigger mode fail! ret[0x%x]" % ret)
179 ret = cam.MV_CC_SetEnumValue(
"TriggerSource", MV_TRIGGER_SOURCE_LINE1)
181 print(
"error: set trigger source fail! ret[0x%x]" % ret)
185 ret = cam.MV_CC_StartGrabbing()
187 print(
"error: start grabbing fail! ret[0x%x]" % ret)
191 thread_handle = threading.Thread(target=work_thread, args=(cam,
None,
None))
192 thread_handle.start()
194 print(
"error: unable to start thread")
196 print(
"press a key to stop grabbing.")
203 ret = cam.MV_CC_StopGrabbing()
205 print(
"error: stop grabbing fail! ret[0x%x]" % ret)
209 ret = cam.MV_CC_CloseDevice()
211 print(
"error: close device fail! ret[0x%x]" % ret)
215 ret = cam.MV_CC_DestroyHandle()
217 print(
"error: destroy handle fail! ret[0x%x]" % ret)
221 MvCamera.MV_CC_Finalize()